home *** CD-ROM | disk | FTP | other *** search
/ SuperHack / SuperHack CD.bin / CODING / DEMOS / NX2NDSRC.ZIP / NIX2ND.ASM < prev    next >
Encoding:
Assembly Source File  |  1995-10-22  |  22.0 KB  |  704 lines

  1. ;Compile:
  2. ;               tasm nix2nd
  3. ;               tlink nix2nd
  4. ;
  5. ;Deze demo is misschien een beetje lame maar ja who doesn't
  6. ;PLease use it to learn things not to fuck things bye bye
  7. ;Yepz een nieuw demoootje van NiX en ook deze keer weer gemaakt door SariX
  8. ;Natuurlijk de Graphics niet (Geen TALENT) maar gelukkig hebbe we SKiN ook
  9. ;nog op stal staan en die heeft zich effe uitgeleefd.
  10. ;Thanx gaan naar:
  11. ;                       SKiN             - Lenen van officeel boek van TASM v2.0
  12. ;                       Dreaden/VLA      - Zorgen voor voorbeeld van Sterretjes
  13. ;                       Troop            - Voor het idee van releasen demo
  14.  
  15. ;Demootje is een beetje een chaos als je eruit komt optimaliseer de code effe
  16. ;Thanx
  17. ;de code is nu een beetje minder chaos behalve het einde, daar is geen touw
  18. ;aan vast te knopen
  19.  
  20.  
  21. ;alle include files zijn:
  22. ;                          ster.dw      locatie sterretjes
  23. ;                          font.dmo     het fontje
  24. ;                          nix.xgx      het plaatje
  25. ;                          grap.xpx     en dit is het paletje
  26. ;                          endmes.txt   en dit zijn de credits
  27.  
  28. ;Greetz to everbody Sarix
  29.  
  30.  
  31.         dosseg
  32.         jumps
  33.         .model small
  34.         .stack
  35.         .code
  36.         .286
  37.         assume cs:@code,ds:@data
  38.  
  39.         .data
  40.         Ideal
  41.  
  42. BewaarSchermData        dw      2000 dup (?)
  43. BewaarCursor            dw      ?
  44.  
  45. lijnYpos1       dw      0               ;lijn voor laatste stuk scherm uitzetten
  46. lijnYpos2       dw      202             ;plaat voor lijn van laatste stuk
  47. lijnXpos1       dw      -1
  48. lijnXpos2       dw      320
  49. exi             db      0               ;mag eruit of niet 0 is geen fade out 1
  50.                                         ;of hoger wel
  51.  
  52. STRUC Ster                              ;effe de Sterretje.Xpos sterretje.Ypos
  53. Xpos    dw 0                            ;en de Sterretje.Opos defineren
  54. Ypos    dw 0
  55. Opos    dw 0
  56. ENDS
  57.  
  58. include   "ster.dw"
  59.  
  60. Slevel1  dw 1                   ;defineer snelheid voor lagen
  61. Slevel2  dw 2
  62. Slevel3  dw 3
  63. Slevel4  dw 4
  64. Slevel5  dw 5
  65.  
  66. Klevel1  db 5                   ;joepie de kleurtjes
  67. Klevel2  db 4                   ;van de sterren 5 is donkerder als 1
  68. Klevel3  db 3                   ;ligt eigenlijk aan het palet
  69. Klevel4  db 2
  70. Klevel5  db 1
  71.  
  72. Alevel1         equ     40     ;hoeveel sterretjes in ieder level
  73. Alevel2         equ     65     ;level1 is 40 level2=25 snappie
  74. Alevel3         equ     85
  75. Alevel4         equ     95
  76. Alevel5         equ     100
  77.  
  78. lengtepallette  dw      768    ;256 kleurtjes keer 3
  79.  
  80. include         'grap.xpx'     ;joeperdepoepie de palet data
  81.  
  82.  
  83. SchermHoogte    equ     200    ;wat zou dit toch zijn
  84. SchermBreedte   equ     320
  85.  
  86. LABEL   YposTabel       WORD    ;opzoek tabel voor ypositie
  87.         i=0
  88.         REPT    SchermHoogte
  89.                 dw i*SchermBreedte
  90.                 i=i+1
  91.         ENDM
  92.  
  93. ;data logo
  94. include "nix.xgx"              ;het logoootje van nix
  95. LengteLogoX     dw      160    ;aantal puntjes breed
  96. LengteLogoY     dw      57     ;aantal puntjes hoog
  97. Lxpos           dw      80     ;de xpositie van het logo
  98. Lypos           dw      0      ;de ypositie van het logo
  99. LupDown         dw      0      ;gaat het logo up of down 1 is up 0 is down
  100. LUmax           dw      25     ;tot welke regel mag het logootje omhoog
  101. LDmax           dw      75     ;tot welke regel mag het logootje omlaag
  102. ;end data logo
  103.  
  104. ;data tekst
  105. include "font.dmo"             ;tatereda het fontje
  106. FontLengte      equ     16     ;gokje  de lengte van een letter
  107. FontHoogte      equ     22
  108.  
  109.  
  110. PosTekstX       dw      PosTekstOrgX   ;de positie waar de letter moet komen
  111. PosTekstY       dw      PosTekstOrgY   ;van deze twee afblijfe
  112. PosTekstOrgX    equ     64            ;de positie waar de regel komt
  113. PosTekstOrgY    equ     132           ;aan deze twee mag je aankomme
  114.  
  115. welkel          dw      1             ;welke letter moet leze gewoon afblijven
  116.  
  117. maxaantal       equ     12           ;hoeveel letters op 1 regel
  118. beginpost       dw      0             ;afblijfe is positie welk letter moet lezen
  119. alfabet         db      'abcdefghijklmnopqrstuvwxyz       ' ;de opzoek tabel voor letters
  120. lengtealfabet   equ     28
  121. label tekst byte
  122.  
  123.                 db      '            '
  124.                 db      '  welcome   '
  125.                 db      '     to     '
  126.                 db      'the improved'
  127.                 db      'nix couriers'
  128.                 db      '   intro    '
  129.                 db      '            '
  130.                 db      ' it started '
  131.                 db      ' with those '
  132.                 db      ' nice stars '
  133.                 db      'and it ended'
  134.                 db      '   in this  '
  135.                 db      ' bloody demo'
  136.                 db      '            '
  137.                 db      'and now the '
  138.                 db      'usual stuff '
  139.                 db      '            '
  140.                 db      'grtx fly to '
  141.                 db      ' uhm  uhmm  '
  142.                 db      ' whizz kid  '
  143.                 db      'from microbe'
  144.                 db      '            '
  145.                 db      'and here is '
  146.                 db      ' his number '
  147.                 db      ' zero  four '
  148.                 db      ' nine  five '
  149.                 db      ' zero  four '
  150.                 db      ' six   one  '
  151.                 db      ' eight zero '
  152.                 db      '            '
  153.                 db      'and ofcourse'
  154.                 db      ' the credits'
  155.                 db      '    code    '
  156.                 db      '   sarix    '
  157.                 db      '    logo    '
  158.                 db      '    skin    '
  159.                 db      '    font    '
  160.                 db      '    skin    '
  161.                 db      '   sarix    '
  162.                 db      '   music    '
  163.                 db      ' your radio '
  164.                 db      '            '
  165.                 db      'nothing more'
  166.                 db      '   to say   '
  167.                 db      '            '
  168.                 db      '  bye bye   '
  169.                 db      '$'
  170.  
  171.                 ;wat zou dat hierboven toch zijn de tekst misschien?????????
  172.  
  173. include "endmes.txt"
  174.  
  175.         MASM
  176.         .code
  177.         Ideal
  178.  
  179. ;de controle procedure kan er niet meer over zeggen
  180. PROC    main
  181.         call    voortroep               ;dingen die eerst gedaan moeten worden
  182. eerste:
  183.         push    @data                 ;laat ds weer us naar data verwijzen
  184.         pop     ds                    ;waarom ??? geen moeilijke vragen stellen
  185.         push    0a000h
  186.         pop     es
  187.  
  188.  
  189.         cmp     [LupDown],1           ;mot dat logo omhoog of omlaag
  190.         je      LogoUp                ;er staat 1 dus het is omhoog
  191. LogoDown:
  192.         add     [Lypos],1             ;zet begin locatie van logo 1 verder
  193.         mov     dx,[LDmax]            ;effe kijken of de max waarde is bereikt
  194.         cmp     [Lypos],dx
  195.         jne     LogoDown0             ;nee ga dan gewoon verder
  196.         mov     [LupDown],1           ;ja de volgende keer omhoog dermee
  197.         add     [beginPost],maxaantal ;en effe andere tekst natuurlijk
  198.                                       ;is anders ook zo eentonig
  199. LogoDown0:
  200.         ;call    zetlogo               ;zet het logo op het scherm
  201.         jmp     Sterretjes
  202. LogoUp:
  203.         sub     [Lypos],1             ;zet begin locatie van logo 1 terug
  204.         mov     dx,[LUmax]            ;effe kijken of de min waarde is bereikt
  205.         cmp     [Lypos],dx
  206.         jne     LogoUp0               ;nee dan ga maar gewoon verder
  207.         mov     [LupDown],0           ;ja dan de volgende keer zakken
  208. LogoUp0:
  209.         ;call    zetlogo               ;zet logootje op scherm
  210.  
  211.  
  212. Sterretjes:
  213.         call    VRTRETRACE            ;verhinder 'snow'
  214.         call    zetregel             ;zet tekst
  215.         call    zetlogo
  216.         call    beweegster           ;zet sterretjes
  217.  
  218.  
  219.         cmp     [exi],1              ;is al op ESC gedrukt of niet
  220.         jae      bexit               ;ja hoor ga effe fade
  221.  
  222. toets_pauze:
  223.         in      al,60h               ;nope check voor escape
  224.         cmp     al,1
  225.         jne     eerste               ;geen escape gedrukt
  226.                                      ;doe de hele zooi nog 1 keer
  227.         mov     [exi],1                 ;ja hoor er is op escape gedrukt
  228.         jmp     bexit                   ;ga dus effe fade
  229. exit:
  230.         in      al,21h               ;joepie het toetsenbord mag weer aan
  231.         and     al,253
  232.         out     21h,al
  233.  
  234.         mov     ax,3                    ;terug naar tekst mode
  235.         int     10h
  236.  
  237.         mov     dx,offset endmessie     ;druk laatste credits af
  238.         mov     ah,9
  239.         int     21h
  240.  
  241. exitwachten:
  242.         mov     ah,1                    ;gelezen ??
  243.         int     16h
  244.         je      exitwachten             ;nee effe wachten dan
  245.  
  246.         push    @data                   ;zet het oude scherm weer terug
  247.         pop     ds
  248.         push    0b800h
  249.         pop     es
  250.         mov     si,offset BewaarSchermData
  251.         xor     di,di
  252.         mov     cx,2000
  253.         repz    movsw
  254.  
  255.         mov     ah,2                    ;en de oude cursor positie
  256.         mov     bh,0
  257.         mov     dx,[BewaarCursor]
  258.         int     10h
  259.  
  260.         mov     ah,4ch          ;terug naar dOs
  261.         int     21h
  262. exit2:
  263.  
  264.         push    0a000h          ;laat es naar schermseg wijzen
  265.         pop     es
  266.         xor     di,di
  267.         mov     al,0FEh         ;effe scherm schrijven met andere kleur
  268.         mov     cx,SchermBreedte*SchermHoogte
  269.         repz    stosb           ;anders komt er een kut rand
  270.  
  271.         mov     ax,1010h        ;kleur 0 weer 0 maken
  272.         xor     bx,bx
  273.         xor     cx,cx
  274.         xor     dx,dx
  275.         int     10h
  276.  
  277.         xor     si,si          ;klap scherm dicht
  278.         mov     cx,SchermHoogte/4
  279. exit2a:
  280.         call    VRTRETRACE
  281.         push    cx
  282.         add     [lijnYpos1],1   ;1 lijntje meer dichtklappen
  283.         sub     [lijnYpos2],1
  284.         call    zetlijn
  285.         add     [lijnYpos1],1   ;1 lijntje meer dichtklappen
  286.         sub     [lijnYpos2],1
  287.         call    zetlijn
  288.  
  289.         pop     cx
  290.         loop    exit2a
  291.  
  292.         sub     [lijnYpos2],1   ;zet de locatie voor laatste witte lijntje
  293.         mov     cx,SchermBreedte/6
  294. exit2b:
  295.         call    vrtretrace
  296.         push    cx
  297.         add     [lijnXpos1],1   ;haal laatste witte lijntje weg
  298.         sub     [lijnXpos2],1
  299.         call    zetpunt
  300.         add     [lijnXpos1],1   ;haal laatste witte lijntje weg
  301.         sub     [lijnXpos2],1
  302.         call    zetpunt
  303.         add     [lijnXpos1],1   ;haal laatste witte lijntje weg
  304.         sub     [lijnXpos2],1
  305.         call    zetpunt
  306.  
  307.  
  308.         pop     cx
  309.         loop    exit2b
  310.  
  311.         jmp     exit
  312.  
  313.  
  314.  
  315.  
  316. bexit:
  317.         add     [exi],1              ;effe kijken of er al 63 kleuren bij zitten
  318.         cmp     [exi],70             ;ja dan is fade out afgelope en mag de demo stoppen
  319.         je      exit2                ;stoppe!!!!!!!!
  320.         pusha                        ;bewaar de zooi registers effe
  321.         push    es ds
  322.         mov     ax,@data             ;laat es en ds naar data wijzen
  323.         mov     ds,ax                ;voor te laden en te schrijven
  324.         mov     es,ax                ;van het palet
  325.  
  326.         mov     si,offset nixpal     ;laat naar palet data wijzen
  327.         mov     di,offset nixpal
  328.         mov     cx,[LengtePallette]
  329.  
  330. bexit0:
  331.         lodsb                        ;laat kleur
  332.         add     al,1                 ;verhoog waarde met 1
  333.         cmp     al,63                ;is al 63
  334.         jb      bexit1               ;nee schrijf waarde weg
  335.         mov     al,63                ;zet op 63
  336. bexit1:
  337.         stosb                        ;schrijf palet waarde
  338.         loop    bexit0               ;herhaal heel het palet
  339.  
  340.  
  341.         mov     dx,offset nixpal     ;zet palet
  342.         mov     ax,1012h
  343.         mov     bx,0
  344.         mov     cx,256
  345.         int     10h
  346.         pop     ds es                ;herstel de troep weer
  347.         popa
  348.         jmp     eerste               ;en weer terug
  349.  
  350.  
  351. ENDP    main
  352.  
  353. PROC    zetpunt
  354.         mov     di,[lijnYpos2]
  355.         add     di,di
  356.         mov     di,[di + YposTabel]
  357.  
  358.         add     di,[lijnXpos1]          ;bepaal plaats
  359.         xor     al,al                   ;kleur 0
  360.         stosb                           ;zet puntje
  361.  
  362.         mov     di,[lijnYpos2]
  363.         add     di,di
  364.         mov     di,[di + YposTabel]
  365.  
  366.         add     di,[lijnXpos2]
  367.         stosb
  368.         ret
  369. ENDP    zetpunt
  370.  
  371. PROC    zetlijn
  372.  
  373.         mov     di,[lijnYpos1]          ;bepaal positie
  374.         add     di,di
  375.         mov     di,[di + YposTabel]
  376.         xor     al,al
  377.         mov     cx,SchermBreedte       ;teken zwarte lijn
  378.         repz    stosb
  379.         mov     di,[lijnYpos2]         ;bepaal positie
  380.         add     di,di
  381.         mov     di,[di + YposTabel]
  382.         xor     al,al
  383.         mov     cx,SchermBreedte       ;teken zwarte lijn
  384.         repz    stosb
  385.         ret
  386. ENDP    zetlijn
  387.  
  388.  
  389. PROC    VRTRETRACE
  390.         mov     dx,3dah              ;effe checken voor 'snow'
  391. vrt:
  392.         in      al,dx                ;is het hele scherm al opgebouwd
  393.         test    al,8                 ;of niet
  394.         jnz     vrt
  395. NoVRT:
  396.         in      al,dx
  397.         test    al,8
  398.         jz      novrt                ;klaar met checken
  399.         ret
  400. ENDP    VRTRETRACE
  401.  
  402.  
  403. PROC    Voortroep
  404.         push    @data                 ;laat ds naar data wijzen
  405.         pop     ds                    ;om de cursor en het scherm effe te saven
  406.         push    0b800h
  407.         pop     es
  408.  
  409.         mov     ah,3                  ;bewaar de cursor
  410.         mov     bh,0
  411.         int     10h
  412.         mov     [bewaarCursor],dx
  413.  
  414.         mov     si,offset BewaarSchermData      ;bewaar het scherm
  415.         xor     di,di
  416.         mov     cx,2000
  417. voortroep_a:
  418.         mov     ax,[es:di]
  419.         mov     [ds:si],ax
  420.         add     di,2
  421.         add     si,2
  422.         loop    voortroep_a
  423.  
  424.         mov     ax,13h                ;stel vga mode in
  425.         int     10h
  426.         
  427.         in      al,21h                ;zet het toetsenbord uit
  428.         or      al,2
  429.         out     21h,al
  430.  
  431.         neg     [slevel1]             ;ik wil effe de sterretjes
  432.         neg     [slevel2]             ;de andere kant op hebben
  433.         neg     [slevel3]
  434.         neg     [slevel4]
  435.         neg     [slevel5]
  436.  
  437.         push    @data                 ;joeperdepoepie effe het palet instellen
  438.         pop     es
  439.         mov     dx,offset nixpal
  440.         mov     ax,1012h
  441.         mov     bx,0
  442.         mov     cx,256
  443.         int     10h
  444.         ret
  445. ENDP    voortroep
  446.  
  447.  
  448.  
  449.  
  450. PROC    ZetLogo
  451.         pusha
  452.         push    es ds             ;bewaar de zooi
  453.  
  454.         push    0a000h            ;scherm segment
  455.         pop     es
  456.         xor     si,si
  457.  
  458.         mov     di,[Lypos]            ;bepaal y positie
  459.         add     di,di
  460.         mov     di,[di + YposTabel]
  461.  
  462.         add     di,[Lxpos]            ;bepaal de totale positie
  463.  
  464.         mov     si,offset nixgfx      ;laat naar logo wijzen
  465.  
  466.         mov     cx,[LengteLogoY]      ;zet logo neer
  467. zetlogo1:
  468.         push    cx
  469.         mov     cx,[LengteLogoX]
  470.         repz    movsb                 ;eerst een x regel
  471.         pop     cx
  472.         add     di,SchermBreedte
  473.         sub     di,[LengteLogoX]
  474.         loop    zetlogo1              ;dan ga naar volgende x regel
  475.  
  476.         pop     ds es                 ;herstel de troep
  477.         popa
  478.         ret
  479. ENDP    ZetLogo
  480.  
  481.  
  482.  
  483.  
  484. PROC    BeweegSter
  485.         Pusha                          ; bewaar de troep
  486.         push    es ds
  487.  
  488.  
  489.         push    0a000h                 ;laat es naar vgasegment wijzen
  490.         pop     es
  491.  
  492.         xor     ax,ax                 ;voor veiligheid ax effe leeg
  493.         xor     si,si                 ;maak si leeg anders schrijven niet kloppen
  494.  
  495.         mov     bp,[Slevel1]          ;zet de snelheid en kleur in registers
  496.         mov     al,[Klevel1]
  497. level1:
  498.         call    ZetSter
  499.         add     si,size ster            ;is het aantal
  500.         cmp     si,(size ster)*Alevel1  ;sterretjes getekend
  501.         jb      level1                  ;nee dan teken er nog maar wat
  502.  
  503.  
  504.         mov     bp,[Slevel2]            ;zie level 1 voor commment
  505.         mov     al,[Klevel2]
  506. level2:
  507.         call    ZetSter
  508.         add     si,size ster
  509.         cmp     si,(size ster)*Alevel2
  510.         jb      level2
  511.  
  512.  
  513.  
  514.         mov     bp,[Slevel3]
  515.         mov     al,[Klevel3]
  516. level3:
  517.         call    ZetSter
  518.         add     si,size ster
  519.         cmp     si,(size ster)*Alevel3
  520.         jb      level3
  521.  
  522.  
  523.  
  524.         mov     bp,[Slevel4]
  525.         mov     al,[Klevel4]
  526. level4:
  527.         call    ZetSter
  528.         add     si,size ster
  529.         cmp     si,(size ster)*Alevel4
  530.         jb      level4
  531.  
  532.         mov     bp,[Slevel5]
  533.         mov     al,[Klevel5]
  534. level5:
  535.         call    ZetSter
  536.         add     si,size ster
  537.         cmp     si,(size ster)*Alevel5
  538.         jb      level5
  539.  
  540.  
  541.         pop     ds es               ;herstel de troep
  542.         Popa
  543.         ret
  544. ENDP    beweegster
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551. PROC    ZetSter
  552.         mov     di,[si + Sterretje.Opos]         ;verwijder oud puntje
  553.  
  554.         mov     dl,[es:di]                      ;effe checken of je wel een
  555.                                                ;puntje weg haalt
  556.         cmp     dl,[Klevel5]                   ;is de plaats kleur van level5
  557.         je      OkTeken1                       ;ja dan mag je teken
  558.         cmp     dl,[Klevel4]                   ;enz
  559.         je      OkTeken1
  560.         cmp     dl,[Klevel3]
  561.         je      OkTeken1
  562.         cmp     dl,[Klevel2]
  563.         je      OkTeken1
  564.         cmp     dl,[Klevel1]
  565.         je      OkTeken1
  566.  
  567.         jmp     GeTekend1                      ;nee dan mag je niet tekenen
  568. OkTeken1:
  569.         mov     [byte es:di],0
  570. GeTekend1:
  571.         mov     di,[si + Sterretje.Ypos]       ;laat ypos
  572.         add     di,di
  573.         mov     di,[di + YposTabel]
  574.  
  575.         add     [si + Sterretje.Xpos],bp        ;tel snelheid er bij op
  576.  
  577.         cmp     [si + Sterretje.Xpos],SchermBreedte  ;niet voorbij scherm
  578.         jl      GeenOver                             ;nee ga naar tekort
  579.         sub     [si + Sterretje.Xpos],SchermBreedte  ;ja dan trek er schermbreedte af
  580. GeenOver:
  581.         cmp     [si + Sterretje.Xpos],0              ;niet te kort
  582.         jge     GeenTeWeinig                         ;nee ga door
  583.         add     [si + Sterretje.Xpos],SchermBreedte  ;ja tel SchermBreedte er bij op
  584. GeenTeWeinig:
  585.         add     di,[si + Sterretje.Xpos]
  586.  
  587.  
  588.         mov     dl,[es:di]        ; lees puntje waar ster getekend moet worden
  589.         cmp     dl,0              ; is dat een 0 of een 16 (16 van font)
  590.         je      OkTeken           ;dan mag getekend worden
  591.         jmp     GeTekend         ;anders niet
  592. OkTeken:
  593.         mov     [es:di],al       ;teken sterretje
  594. GeTekend:
  595.         mov     [si + Sterretje.OPos],di  ;bewaar oude locatie
  596.         ret
  597. ENDP    ZetSter
  598.  
  599.  
  600. PROC    Zetregel
  601.         pusha                   ;ja dit weet je nu wel
  602.         push    es ds
  603.  
  604.         mov     ax,@data
  605.         mov     ds,ax
  606.         push    0a000h
  607.         pop     es
  608.  
  609.  
  610. Beginregel:
  611.         mov     si,offset tekst     ;zet begin tekst in si
  612.  
  613.         add     si,[beginpost]      ;zet begin van zin
  614.         jmp     NietOpnieuwRegel
  615. OpnieuwRegel:
  616.         mov     bx,0                ;tekst is op dus begin weer opnieuw
  617.         mov     [beginpost],bx
  618.         jmp     beginregel
  619. NietOpnieuwRegel:
  620.         mov     cx,maxaantal        ;hoeveel letter op 1 regel
  621. leesvolg:
  622.         lodsb                       ;lees letter in
  623.         cmp     al,'$'
  624.         je      OpnieuwRegel        ;is einde van tekst begin opnieuw
  625.         mov     bx,ax               ;zet letter in bx
  626.         call    leeswelkelet        ;kijk welke letter het is
  627.         call    zetletter           ;zet de letter op het scherm
  628.  
  629.         add     [PosTekstX],FontLengte
  630.  
  631.         loop    leesvolg            ;zet de volgende letter van de zin op het scherm
  632.         
  633.         mov     bx,PosTekstOrgX     ;zet de orginele locatie neer voor de volgende zin
  634.         mov     [PosTekstX],bx
  635.         mov     bx,PosTekstOrgY
  636.         mov     [PosTekstY],bx
  637.  
  638.  
  639.         pop     ds es               ;herstel de troep en ga terug
  640.         popa
  641.         ret
  642. ENDP    Zetregel
  643.  
  644. PROC    Leeswelkelet
  645.  
  646.         pusha
  647.         xor     cx,cx
  648.         mov     si,offset alfabet
  649. zoeklet:
  650.         lodsb                         ;laat letter van alfabet in
  651.         cmp     ax,bx                 ;is het dezelfde letter
  652.         je      letgevonden           ;ja dan zet welkel goed
  653.         inc     cx                    ;nee dan is het misschien 1 letter verder
  654.         cmp     cx,lengtealfabet      ;teveel letters geprobeerd
  655.         jne     zoeklet               ;kijk nog 1 letter
  656.  
  657. letgevonden:
  658.         mov     [welkel],cx           ;zet welkel
  659.         popa
  660.         ret
  661. ENDP    Leeswelkelet
  662.  
  663. PROC    Zetletter
  664.         pusha
  665.         mov     ax,FontLengte*FontHoogte   ;zet begin letter in data klaar
  666.         mov     bx,[welkel]
  667.         mul     bx
  668.         mov     si,offset font
  669.         add     si,ax
  670.  
  671.         mov     di,[PosTekstY]             ;zet positie waar letter op scherm
  672.         add     di,di                      ;moet komen
  673.         mov     di,[di + YPosTabel]
  674.         add     di,[PosTekstX]
  675.  
  676.  
  677.         mov     cx,FontHoogte
  678. leeslet:
  679.         push    cx
  680.         mov     cx,FontLengte              ;zet 1 regel van de letter
  681.         repz    movsb
  682.         add     di,SchermBreedte           ;tel schermbreedte er bij op
  683.         sub     di,FontLengte              ;en fontlengte er van af om de
  684.         pop     cx                         ;2 de plaats te komen
  685.         loop    leeslet                    ;zet nog wat regels
  686.  
  687.         popa
  688.         ret
  689. ENDP    Zetletter
  690.  
  691.  
  692.  
  693. ;klaaaaaaaaaaaaaaaaaaaaaaaaar he he het documenteren van de demo is het kutste
  694. ;werk wat er bestaat het zal nog wel wat raar zijn maar ja alleen ik mot het
  695. ;snappe snappie
  696. ;cu l8r
  697.  
  698. ;PLease use it to learn things not to fuck things bye bye
  699.  
  700. end     main
  701.  
  702.  
  703.  
  704.